home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 301-325 / 325 / batchman / code / batchintuition.mod < prev    next >
Text File  |  1995-03-14  |  4KB  |  152 lines

  1. (* Copyright 1988 Michal Todorovic *)
  2.  
  3.  
  4. IMPLEMENTATION MODULE BatchIntuition;
  5.  
  6.   
  7. FROM Intuition       IMPORT WindowPtr, IDCMPFlags, 
  8.          IDCMPFlagsSet, WindowFlags, WindowFlagsSet, 
  9.          GadgetPtr, CloseWindow, SimpleRefresh;
  10. FROM SYSTEM          IMPORT ADR, BYTE, ADDRESS;
  11. FROM DosStuff        IMPORT LongString, ShortString, MaxGadgets;
  12. FROM Strings         IMPORT StringLength, ConcatString, 
  13.                             InsertSubString;
  14. FROM SimpleGadgets   IMPORT BeginGadgetList, AddGadgetString, 
  15.                             AddGadgetTextButton, EndGadgetList;
  16. FROM SimpleWindows   IMPORT CreateWindow, WindowMaxHeight,
  17.                             WindowMaxWidth, WindowDetailPen;
  18.  
  19. VAR
  20.   First : BOOLEAN;
  21.  
  22.  
  23. (**********************************************************)
  24. (* Puts spaces in an array.                               *)
  25. (**********************************************************)
  26. PROCEDURE CreateSpaces(VAR Info : ARRAY OF CHAR; 
  27.                            Num  : CARDINAL);
  28.  
  29. VAR
  30.   X : CARDINAL;
  31.  
  32. BEGIN
  33.   FOR X := 0 TO (Num - 1) DO
  34.     Info[X] := ' '
  35.   END;
  36.   Info[Num] := 0C
  37. END CreateSpaces;
  38.  
  39.  
  40.  
  41.  
  42. (**********************************************************)
  43. (* Centers a gadget name in the gadget.                   *)
  44. (**********************************************************)
  45. PROCEDURE Center(VAR Info : ARRAY OF CHAR);
  46.  
  47. VAR
  48.   HowMany,
  49.   Length  : CARDINAL;
  50.   Dum     : ARRAY[0..7] OF CHAR;
  51.  
  52. BEGIN
  53.   Length := StringLength(Info);
  54.   HowMany := (15 - Length) DIV 2;
  55.   CreateSpaces(Dum, HowMany);
  56.   InsertSubString(Info, Dum, 0);
  57.   CreateSpaces(Dum, (15-HowMany-Length));
  58.   ConcatString(Info, Dum)
  59. END Center;
  60.  
  61.  
  62.  
  63. (**********************************************************)
  64. (* Opens a window.                                        *)
  65. (**********************************************************)
  66. PROCEDURE OpenWin(VAR Win : WindowPtr; Gad : GadgetPtr;
  67.                   H : INTEGER);
  68. BEGIN
  69.   (* Compensate for interlace screens. Won't hurt 
  70.      non-interlace screens.                               *)
  71.   INC(WindowMaxHeight, WindowMaxHeight);
  72.   WindowDetailPen := BYTE(2);
  73.   Win := CreateWindow(0, 1, 640, H, 
  74.                    IDCMPFlagsSet{Closewindow,GadgetUp, 
  75.                    RefreshWindow}, 
  76.                    WindowFlagsSet{WindowClose, WindowDrag, 
  77.                    WindowDepth, Activate, WindowSizing} 
  78.                    + SimpleRefresh,
  79.                    Gad, NIL, 
  80.                    ADR("BATCHMAN!   by Michal Todorovic. V1.1"))
  81. END OpenWin;
  82.  
  83.  
  84.  
  85.  
  86. (**********************************************************)
  87. (* Closes a window.                                       *)
  88. (**********************************************************)
  89. PROCEDURE CloseWin(VAR Win : WindowPtr);
  90.     
  91. BEGIN
  92.   IF Win <> NIL THEN
  93.     CloseWindow(Win^)
  94.   END
  95. END CloseWin;
  96.  
  97.  
  98.  
  99.  
  100. (**********************************************************)
  101. (* Creates all the gadgets.                               *)
  102. (**********************************************************)
  103. PROCEDURE SetUpGadgets(Num : INTEGER; 
  104.                        VAR Info : ARRAY OF ShortString;
  105.                        VAR Top : INTEGER) : GadgetPtr;
  106. VAR
  107.   Left,
  108.   Mult,
  109.   Length,
  110.   Counter    : INTEGER;
  111.  
  112. BEGIN
  113.   (* compensate for overscan. *)
  114.   Mult := 163;
  115.   Left := 10;
  116.   Top  := 15;
  117.   BeginGadgetList();
  118.  
  119.   FOR Counter := 0 TO (Num - 1) DO
  120.  
  121.     IF First THEN
  122.       Center(Info[Counter])
  123.     END;
  124.     AddGadgetTextButton(Left, Top, ADR(Info[Counter]));
  125.  
  126.     IF (((Counter + 1) MOD 4) = 0) THEN 
  127.       INC(Top, 15)   (* go to new line *)
  128.     END;
  129.  
  130.     (* decide how far left to go. *)
  131.     Left := 10 + (((Counter + 1) MOD 4) * Mult)
  132.   END;
  133.  
  134.   IF  (Counter MOD 4) = 0 THEN 
  135.     INC(Top, 5)
  136.   ELSE 
  137.     INC(Top, 20)
  138.   END;
  139.  
  140.   AddGadgetString(10, Top, 75, 100, NIL);
  141.  
  142.   First := FALSE;
  143.   RETURN EndGadgetList()
  144. END SetUpGadgets;
  145.  
  146.  
  147.  
  148.  
  149. BEGIN
  150.   First := TRUE;
  151. END BatchIntuition.
  152.